package top.chmin.project.cloud.common.entity.auto;


import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.time.LocalDateTime;
import java.util.List;

/**
 * chmin
 * 2023-12-26 09:17:13
 * cloud-builder
 */
public interface EntitySelect {

    @PostMapping("/au/entity/select")
    List<Result> select(@RequestBody Param param);

    @Getter
    @Setter
    @Accessors(chain = true)
    class Param {
        // 表前缀
        String prefix;
        // 包路径
        String pathName;
        // 包名
        String packageName;
        // 表名
        String tableName;
        // 默认从多少起
        Long autoFirst;
        // 时间格式化字符串
        String autoDate;
        // search value字段
        Long searchValue;
        // search label字段
        Long searchLabel;
        // select value字段
        Long selectValue;
        // select label字段
        Long selectLabel;
        // 注释
        String remark;
        // 类名
        String className;
        // 修改时间
        LocalDateTime updateTime;
        // 创建时间
        LocalDateTime createTime;
        // 修改人
        String updateBy;
        // 创建人
        String createBy;
        // ID
        Long id;
        // 模块名
        String moduleName;
        // 开始修改时间
        LocalDateTime updateTimeBegin;
        // 结束修改时间
        LocalDateTime updateTimeEnd;
        // 开始创建时间
        LocalDateTime createTimeBegin;
        // 结束创建时间
        LocalDateTime createTimeEnd;
    }

    @Getter
    @Setter
    @Accessors(chain = true)
    class Result {
        // $bind.field.remark$
        String label;
// $bind.field.tableName$
        String value;
// $bind.field.prefix$
        // #bind.field.tableName#
        // 表名
        private String tableName;
// $bind.field.className$
        // #bind.field.prefix#
        // 表前缀
        private String prefix;
// $bind.field.module$
        // #bind.field.className#
        // 类名
        private String className;
// $bind.field.pack$
        // #bind.field.module#
        // 模块
        private String module;
// $bind.field.path$
        // #bind.field.pack#
        // 包名
        private String pack;
        // #bind.field.path#
        // 相对路径
        private String path;
        // #bind.field.remark#
        // 备注
        private String remark;
    }

}
